#pragma once

#include <bofcl_csr_mtvec.h>

// mode域的取值
typedef enum {
	MTVEC_MODE_DEFAULT = 0,
	MTVEC_MODE_ECLIC = 3,
} csr_mtvec_mode_e;

// mtvec寄存器的定义
typedef struct {
	csr_mtvec_mode_e mode : 6;
	u32_s exc_entry_r6 : 26;
} csr_mtvec_expl_s;

// 设置中断模式（默认模式或ECLIC模式）和异常入口地址
static inline void csr_set_irq_mode_exc_entry_entry(csr_mtvec_expl_s mtvec) {
	union {
		csr_mtvec_expl_s e;
		csr_mtvec_s r;
	} er = {
		.e = mtvec,
	};
	csr_wreg_mtvec(er.r);
}
